最近獲得一個小感測器DHT22,可以感測濕度溫度,今天就來玩玩Raspberry pi 4的GPIO吧。
第一步先介紹DHT22的構造,他還有一個更便宜的版本DHT11,兩者差異蠻明顯的,DHT11準確度低於DHT22,且偵測溫度範圍也沒有DHT22(攝氏-40 to 80 度)那麼大,所以就使用DHT22來進行今天的實驗。
我的版本是三隻腳的,從左至右的順序
Left: VCC (Power Supply) ->接任一3.3V power (我接在1號位)
Middle: Data ->接GPIO (我接在GPIO4 也就是7號位)
Right: Ground ->接任一GROUND(我接在6號位)
如果是四隻腳的版本,就是左邊數來第三隻腳不要連接就好了。
可以再對照一次GPIO位置圖
下圖是我接成功的結果也是今天實驗所需零件(我使用的是Raspberry pi 4 4G)
今天的實驗我是透過ssh連線到樹莓派下指令的,如果不確定要如何設定請參照Day3或Day4。
那麼開始安裝,今天我們會使用到Adafruit_DHT這個Library
在開始進行到這個library之前,我們要先確認系統已經更新。
sudo apt-get update
sudo apt-get install python3-pip
sudo apt-get install python3-dev python3-pip
sudo python3 -m pip install --upgrade pip setuptools wheel
現在使用pip安裝Adafruit_DHT
sudo pip3 install Adafruit_DHT
裝好了之後我們來編輯一個python檔接收溫度及濕度資料。
nano ~/DHT22.py
進入DHT22.py開始打上程式碼,稍微解釋一下變數
DHT_SENSOR = Adafruit_DHT.DHT22就是告訴程式今天感測器是誰
這個library除了DHT22還有支援Adafruit_DHT.DHT11 和 Adafruit_DHT.AM2302
DHT_PIN = 4是我們中間那隻腳連接的地方,因為我連在GPIO4,所以=4
import Adafruit_DHT
DHT_SENSOR = Adafruit_DHT.DHT22
DHT_PIN = 4
while True:
humidity, temperature = Adafruit_DHT.read_retry(DHT_SENSOR, DHT_PIN)
if humidity is not None and temperature is not None:
print("Temp={0:0.2f}*C Humidity={1:0.2f}%".format(temperature, humidity))
else:
print("Failed to retrieve data from HDT22 sensor")
偵測結果,成功!
最後稍微提醒一下,其實Adafruit_Python_DHT這個library已經不再更新了,但他還是有支援到Raspberry pi 4,最新版支援DHT22的是以下的這個library
https://github.com/adafruit/Adafruit_CircuitPython_DHT
這就是簡單使用感測器並且使用了python程式控制輸出結果,是不是很簡單呢?
今天的連接Raspberry pi 的GPIO實驗就到這邊。